package com.itheima.demo01.Object;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/*
Object类中的tostring方法
java.lang.Object类
类Object是类层次结构的根(最顶层)类，每个类都使用Object作为超(父)类
 所有对象(包括数组)都实现这个类的方法
 */
public class Demo01ToString {
    public static void main(String[] args) {
        /*
        Person默认继承了Object类，所以可以使用Object类中的toString方法。
       String toString() 返回该对象的字符串表示。
         */
        Person p =new Person("张三",18);
        String s=p.toString();
        System.out.println(s);//com.itheima.demo01.Object.Person@75412c2f

        //直接打印对象的名字，其实就是调用对象的toString方法  p = p.toString方法
        System.out.println(p);//com.itheima.demo01.Object.Person@75412c2f

        /*看一个类重写了toString方法，直接打印了这个类对应对象的名字即可
        如果没有重写toString方法，那么打印的就是对象的地址值(默认)
        如果重写了toString方法，那么就按照重写的方式打印。
        */
        Random r = new Random();
        System.out.println(r);//java.util.Random@880ec60说明Random 没有重写toString对象

        Scanner sc = new Scanner(System.in);
        System.out.println(sc);//java.util.Scanner[delimiters=\p{javaWhitespace}.说明Scanner重写了Scanner方法

        ArrayList<Integer> list= new ArrayList<>();
        list.add(1);
        list.add(2);
        System.out.println(list);//[1, 2].说明ArrayList重写了toString方法（重写用快捷键既可以，不用自己重写）

    }
}
